]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add an API to allow extension to set a theme
authorSardem FF7 <sardemff7.pub@gmail.com>
Tue, 11 Jan 2011 11:15:26 +0000 (12:15 +0100)
committerOwen W. Taylor <otaylor@fishsoup.net>
Sun, 30 Jan 2011 21:01:15 +0000 (16:01 -0500)
Add a setTheme function to Main that allows to set a CSS stylesheet
which overrides the GNOME Shell default one

https://bugzilla.gnome.org/show_bug.cgi?id=630428

js/ui/main.js

index 1d456af8dc4e27f47e2e3a6dbaa2b0b9e152e0d0..572709c0e8b246a1d63a0183a3a34e817585b20d 100644 (file)
@@ -67,6 +67,8 @@ let xdndHandler = null;
 let statusIconDispatcher = null;
 let _errorLogStack = [];
 let _startDate;
+let _default_css_stylesheet = null;
+let _css_stylesheet = null;
 
 let background = null;
 
@@ -111,6 +113,7 @@ function start() {
     global.stage.color = DEFAULT_BACKGROUND_COLOR;
     global.stage.no_clear_hint = true;
 
+    _default_css_stylesheet = global.datadir + '/theme/gnome-shell.css';
     loadTheme();
 
     let shellwm = global.window_manager;
@@ -204,15 +207,31 @@ function start() {
     }
 }
 
+/**
+ * setTheme
+ * @css_stylesheet: A file path that contains the theme CSS,
+ *                  set it to null to use the default
+ *
+ * Set the theme CSS file that the shell will load
+ */
+function setTheme(css_stylesheet)
+{
+    _css_stylesheet = css_stylesheet;
+}
+
 /**
  * loadTheme:
  *
- * Reloads the theme CSS file from the default theme.
+ * Reloads the theme CSS file
  */
 function loadTheme() {
     let themeContext = St.ThemeContext.get_for_stage (global.stage);
-    let stylesheetPath = global.datadir + '/theme/gnome-shell.css';
-    let theme = new St.Theme ({ application_stylesheet: stylesheetPath });
+
+    let css_stylesheet = _default_css_stylesheet;
+    if (_css_stylesheet != null)
+        css_stylesheet = _css_stylesheet;
+
+    let theme = new St.Theme ({ application_stylesheet: css_stylesheet });
     themeContext.set_theme (theme);
 }